# 自定义标签 或者 选择器 先带入以下声明:
from django import template
register = template.Library()
from django.utils.html import format_html



# 标签:购物车数量显示
from django.utils.html import format_html
@register.simple_tag
def cartnum(request):
    a = 0
    try:
        for i in request.session['cartdata'].values():
            a += i['num']
        return a
    except:
        return a




# 自定义标签 : 单价*数量
from django.utils.html import format_html
@register.simple_tag
def cheng(n1,n2):
    n1 = int(n1)
    n2 = float(n2)
    return n1 * n2


# 自定义分页标签
@register.simple_tag
def showpage(num,request):  # 参数1总页数 参数2 请求对象request
    num = int(num)
    p = int(request.GET.get('p',1))
    # return format_html('<h1>'+str(num)+'</h1>')   #测试数据.
    #设置起始页和结束页的初始值,并根据当前页特殊情况赋值
    begin = p-4
    end = p + 5
    # 当前页正向数5以内
    if p < 5:
        begin = 1
        end = 10
    # 当前页倒数5以内
    if p > num-5:
        begin = num-9
        end = num
    # 总页数低于10
    if num < 10:
        begin = 1
        end = num


    # 取出request中get排除p的值
    get_str = ''
    for i in request.GET:
        print(i)
        if i != 'p':
            get_str +='&'+i+'='+request.GET[i]
    print(get_str)
    # for 循环遍历拼接a标签 并拼接get_str

    page_str=''
    #首页拼接
    page_str='<li><a href="?p=1'+get_str+'">首页</a></li >'

    #上一页拼接:
    if p<=1:
        page_str += '<li><a>上一页</a></li >'
    else:
        page_str += '<li><a href="?p=' + str(p-1) + get_str + '">上一页</a></li >'

    #常规页码拼接
    for i in range(begin,end+1):
        # 如果i等于当前页码,说明是被选中状态
        if i == p:
            page_str += '<li class="am-active" ><a href="?p=' + str(i) + get_str + '">' + str(i) + '</a></li >'
        else:
            page_str +='<li><a href="?p='+str(i)+get_str+'">'+str(i)+'</a></li >'

    #下一页拼接
    if p>=num:
        page_str += '<li><a>下一页</a></li >'
    else:
        page_str += '<li><a href="?p=' + str(p + 1) + get_str + '">下一页</a></li >'
    #尾页拼接
    page_str += '<li><a href="?p='+str(num)+'' + get_str + '">尾页</a></li >'
    # print(page_str)
    return format_html(page_str)



